/*
 * Copyright (c)  2020,  DataPipeline
 * All rights reserved.
 *
 * Id:SqlProvider.java   2020-07-18 17:29 wanglijun
 */
package cn.datacare.orm.annotation;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import static cn.datacare.orm.util.Separator.EMPTY;

/**
 * <p>
 * Title:
 * </p>
 * <p>
 * Description: 提供一个SqlProvider注解，让特定的Provider类来提供动态sql 为那些实在是不想写独立的sql文件，但是又有比较复杂的动态sql的人准备的
 * </p>
 * <p>
 * Copyright: Copyright (c) 2020
 * </p>
 * <p>
 * Company/Department: DataPipeline
 * </p>
 *
 * @author wanglijun
 * @version 1.0
 * @since 2020-07-18 17:29
 */
@Target({java.lang.annotation.ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface SqlProvider {
    /**
     * 由哪个类来提供生成动态的SQL
     * @return 类
     */
    Class<?> provider();

    /**
     * 由provider类的哪个方法来提供动态SQL
     * 不设置则由取当前被注解方法的同名方法
     * @return 方法名
     */
    String method() default EMPTY;
}
